Skip to content

fix(mobile): restore iOS Threads branding - #4862

Merged
juliusmarminge merged 6 commits into
pingdotgg:mainfrom
PixPMusic:pixpmusic/restore-ios-home-branding
Jul 30, 2026
Merged

fix(mobile): restore iOS Threads branding#4862
juliusmarminge merged 6 commits into
pingdotgg:mainfrom
PixPMusic:pixpmusic/restore-ios-home-branding

Conversation

@PixPMusic

@PixPMusic PixPMusic commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • restore the compact T3 Code brand lockup on the iPhone and iPadOS Threads page
  • label development, preview, and production builds as Dev, Nightly, and Alpha
  • align the lockup with the compact thread list and match Android/desktop proportions
  • preserve the native Threads route title, accessibility identity, and iOS scroll-edge fade
  • prevent split and compact headers from clearing each other's toolbar items
  • generate official store screenshots from the production app variant so they show Alpha

Fixes: #4864.

Important

Merge #4861 after this to correct the Android build-channel pill.

Why

Android gained branded Threads navigation in #3774 and iOS followed in #4025. The final commit in #4163 removed only the iOS lockup while renaming mobile navigation headers to Threads, leaving the two platforms inconsistent.

The first restoration also replaced the native title directly, which broke iOS scrollfade. This version keeps Threads as the native route title for UIKit, accessibility, routing, and deep links, then presents the visible “T3 Code” lockup as an accessible leading heading. Split detail mode explicitly clears that item, and toolbar ownership changes run before paint so rotating or changing layouts cannot pop the brand into the wrong pane.

Before / After

iPhone

Before After
iPhone Threads page before, showing the plain Threads title in dark mode iPhone Threads page after, showing the aligned T3 Code Dev lockup in dark mode

iPadOS

Before After
iPadOS Threads sidebar before, showing the plain title left of the thread-list inset iPadOS Threads sidebar after, showing the aligned T3 Code Dev lockup

Both comparisons use the deterministic dark-mode Threads fixture with no popup.

Verification

  • vp test run scripts/mobile-showcase.test.ts apps/mobile/src/lib/mobileBranding.test.ts apps/mobile/src/native/scrollEdgeEffects.test.ts - 27 tests passed
  • vp run --filter @t3tools/mobile typecheck
  • targeted formatting and git diff --check
  • iPhone portrait baseline and scrollfade with list content behind the header
  • iPadOS portrait/landscape baselines, landscape scrollfade, and Show/Hide Sidebar with no popping or misplaced brand
  • 30 upload-ready Apple screenshots validated for iPhone 6.9, iPhone 6.5, and iPad 13 in light/dark mode
  • production Apple and Android store captures show Alpha and contain no reconnect state

Store upload assets remain generated, ignored workflow artifacts under artifacts/app-store/screenshots/; PR proof images are not committed.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I added regression coverage
  • I included before/after UI evidence
  • I preserved routing, deep linking, accessible page identity, and native scrollfade

Model: GPT-5.6 Sol | Harness: Codex in T3 Code


Note

Low Risk
Changes are limited to mobile navigation chrome, layout metrics, and internal showcase scripts; routing and deep links stay on the production scheme with no auth or data-path changes.

Overview
Restores the compact T3 Code navigation lockup (wordmark, “Code”, and a build-stage chip) on iPhone and iPad Threads instead of the plain Threads title, while keeping route/linking identity as Threads and accessible heading “T3 Code, Threads”.

Adds CompactBrandTitle and getCompactBrandHeaderOptions, which on iOS liquid glass injects the lockup as a custom leading header item and otherwise uses a custom headerTitle. Stage labels map app variant to Dev, Nightly, or Alpha via resolveMobileStageLabel. Shared HOME_HORIZONTAL_INSET / iPad offsets align the header with compact thread-list content.

HomeRouteScreen clears left header items in split detail mode and reapplies brand options on phone; sidebar shell and main Stack Home screen use the same helper. NativeHeaderToolbarRoot switches to useLayoutEffect so split vs compact layouts do not race on header toolbar registration.

Showcase/screenshot tooling switches from development (t3code-dev, T3CodeDev) to production (t3code, T3Code, APP_VARIANT=production) so captures match store branding (e.g. Alpha chip).

Reviewed by Cursor Bugbot for commit 077cbed. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Restore iOS Threads branding in navigation headers using a compact brand lockup component

  • Adds CompactBrandTitle component that renders a T3 wordmark, 'Code' label, and a dynamic stage badge ('Alpha', 'Dev', 'Nightly') based on app variant.
  • Adds getCompactBrandHeaderOptions() which selects between a transparent title with a native leading item (iOS liquid glass) or a custom headerTitle component for other platforms.
  • Updates the Home screen, sidebar, and HomeRouteScreen to use getCompactBrandHeaderOptions() instead of static title strings.
  • Fixes split-view layouts in HomeRouteScreen to explicitly clear unstable_headerLeftItems to prevent stale header items.
  • Switches useEffect to useLayoutEffect in NativeHeaderToolbarRoot so toolbar items are applied before paint, reducing interim header flicker.
  • Updates the showcase build scripts and tests to target the production app variant, package, and scheme instead of development.

Macroscope summarized 077cbed.

@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2751dfa1-0ed6-446b-a068-6089e04c75a8

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Jul 29, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Jul 29, 2026
@macroscopeapp

macroscopeapp Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 077cbed

This PR introduces a branded header component for iOS navigation bars and integrates it across the mobile app. Changes are purely presentational (logo, text styling, stage labels) with no significant runtime behavior impact beyond visual appearance.

You can customize Macroscope's approvability policy. Learn more.

@PixPMusic

Copy link
Copy Markdown
Contributor Author

@macroscope-app please refresh the PR summary in the description markers.

@macroscopeapp

macroscopeapp Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Sorry, I'm unable to act on this request because you do not have permissions within this repository.

@PixPMusic
PixPMusic force-pushed the pixpmusic/restore-ios-home-branding branch from 7b622b0 to 574c5d8 Compare July 29, 2026 22:07
@macroscopeapp
macroscopeapp Bot dismissed their stale review July 29, 2026 22:07

Dismissing prior approval to re-evaluate 574c5d8

@github-actions github-actions Bot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Jul 29, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 574c5d8. Configure here.

Comment thread apps/mobile/src/features/home/HomeRouteScreen.tsx
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Jul 29, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review July 29, 2026 22:32

Dismissing prior approval to re-evaluate fc85e35

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Jul 29, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review July 29, 2026 22:50

Dismissing prior approval to re-evaluate 077cbed

@PixPMusic

Copy link
Copy Markdown
Contributor Author
iphone-aligned-scrolled @juliusmarminge blur issues fixed !

@juliusmarminge
juliusmarminge merged commit cb293fe into pingdotgg:main Jul 30, 2026
16 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Discussion]: Choose consistent mobile Threads branding

2 participants